// pages/login/login.js
let debounceTimer = null; // 声明防抖定时器
let loginFailCount = 0; // 记录登录失败次数
let lastLoginFailTime = 0; // 记录上次登录失败时间

Page({
  /**
   * 页面的初始数据
   */
  data: {
    username: '',
    password: ''
  },

  /**
   * 表单提交事件处理函数
   */
  formSubmit(e) {
    const { username, password } = e.detail.value;
    if (!username || !password) {
      wx.showToast({ title: '请输入用户名和密码', icon: 'none' });
      return;
    }

    // 检查登录失败次数是否超过限制
    if (loginFailCount >= 3) {
      wx.showToast({ title: '登录失败次数过多，请1分钟后尝试', icon: 'none' });
      return;
    }

    // 检查距离上次登录失败的时间是否超过3分钟
    const currentTime = new Date().getTime();
    if (currentTime - lastLoginFailTime < 60 * 1000) {
      wx.showToast({ title: '登录失败次数过多，请1分钟后尝试', icon: 'none' });
      return;
    }

    // 使用防抖函数进行登录验证或注册操作
    this.debounceLoginOrRegister(username, password);
  },

  /**
   * 防抖处理登录验证或注册操作
   */
  debounceLoginOrRegister(username, password) {
    // 清除之前的防抖定时器
    clearTimeout(debounceTimer);

    // 设置新的防抖定时器
    debounceTimer = setTimeout(() => {
      // 调用云函数进行登录验证或注册操作
      this.loginOrRegister(username, password);
    }, 500); // 设置防抖延迟时间为1秒
  },

  /**
   * 登录验证或注册操作
   */
  loginOrRegister(username, password) {
    // 调用云函数进行登录验证或注册操作
    wx.showLoading({ title: '登录中' });
    wx.cloud.callFunction({
      name: 'adminpass',
      data: {
        username,
        password
      }
    })
    .then(res => {
      wx.hideLoading();
      if (res.result && res.result.success) {
        wx.showToast({ title: '登录成功' });
        wx.navigateTo({ url: '/pages/my/admin/main/main' });
      } else {
        // 登录失败，增加失败次数并记录失败时间
        loginFailCount++;
        lastLoginFailTime = new Date().getTime();
        wx.showToast({ title: '用户名或密码错误', icon: 'none' });
      }
    })
    .catch(err => {
      wx.hideLoading();
      console.error('登录失败：', err);
      wx.showToast({ title: '登录失败，请重试', icon: 'none' });
    });
  }
});
